package strategy;

import observer.ConcreteObserverA;
import observer.ConcreteObserverB;
import observer.ConcreteSubject;
import observer.Subject;

/**
 * 策略模式定义：
 * 定义一组算法，将每个算法都封装起来，并且使它们之间可以互换。
 * 策略模式使这些算法在客户端调用它们的时候能够互不影响地变化
 *
 *  面向接口编程
 */
public class Client {

    public static void main(String[] args) {
        ConcreteStrategyA strategyA = new ConcreteStrategyA();
        ConcreteStrategyB strategyB = new ConcreteStrategyB();
        Context context = new Context(strategyA);
        context.mothod();
        context.setStrategy(strategyB);
        context.mothod();
    }

}
